Aggregated Search Results for Local and Remote Services

ABSTRACT

A search system may include searches performed on remotely hosted services that may be indexed and queried by an aggregated search tool. The search tool may aggregate desktop searches and internet searches with searches of remotely hosted services into a single set of results. Remotely hosted services may include databases and other services that are hosted over the Internet but may be privately available to a user. Examples of remotely hosted services may include shared directories, customer resource management systems, project management tools, accounting systems, and other remote services. In some embodiments, a search index created from the remote service may be stored locally or on a server.

BACKGROUND

Searching computer data for useful information is one of the mostimportant functions of today's computer systems. In addition to Internetsearch engines that may search websites and other publically accessibledata, various applications such as email programs, word processingprograms, spreadsheets, and other sources may generate large amounts ofdata that may be stored locally on a computer system.

From a user's standpoint, useful data may be spread across many formats,such as email, spreadsheets, websites, and other databases. Whenperforming a search, a user may wish to perform a search for specifickeywords or content without knowing exactly which type of content may bereturned. For example, a search for a specific airline may return theairline's website but also email confirmation of a recent trip on thesame airline.

SUMMARY

A search system may include searches performed on remotely hostedservices that may be indexed and queried by an aggregated search tool.The search tool may aggregate desktop searches and internet searcheswith searches of remotely hosted services into a single set of results.Remotely hosted services may include databases and other services thatare hosted over the Internet but may be privately available to a user.Examples of remotely hosted services may include shared directories,customer resource management systems, project management tools,accounting systems, and other remote services or remotely hostedapplications. In some embodiments, a search index created from theremote service may be stored locally or on a server.

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used to limit the scope of the claimed subject matter.

BRIEF DESCRIPTION OF THE DRAWINGS

In the drawings,

FIG. 1 is a diagram illustration of an embodiment showing a system withsearching capabilities for remote services.

FIG. 2 is a flowchart illustration of an embodiment showing a method forsearching multiple data stores and aggregating results.

DETAILED DESCRIPTION

Remote services may be included into a multifaceted search system thatmay also perform desktop searches and local area network searches. Theremote services may be indexed with an index stored on a local areanetwork server, remote server, or on a client device. The search systemmay receive a search request, perform queries using various indexes,including the index from the remote service, and aggregate the resultsfrom the various sources using various aggregation techniques.

Remote services may be any type of service that is accessed over anetwork connection, including services provided over the Internet. Suchservices may involve access to specialized databases, remote filestorage system, or other information. In many cases, the service mayrestrict general access to the data and may use authentication or otheraccess control to allow only registered users to access the data.

The search system may use a crawler or other indexing mechanism togenerate an index of the remote service for the data for which the userhas permission to access. The index may be stored on a user's clientdevice, a local server, a remote server, a server that hosts the remoteservice, or other location.

When a search is initiated, the index of the remote service may bequeried and results returned. The results may be aggregated with othersearch results, such as desktop search results, local area networksearch results, internet search results, and other search results.

Specific embodiments of the subject matter are used to illustratespecific inventive aspects. The embodiments are by way of example only,and are susceptible to various modifications and alternative forms. Theappended claims are intended to cover all modifications, equivalents,and alternatives falling within the spirit and scope of the invention asdefined by the claims.

Throughout this specification, like reference numbers signify the sameelements throughout the description of the figures.

When elements are referred to as being “connected” or “coupled,” theelements can be directly connected or coupled together or one or moreintervening elements may also be present. In contrast, when elements arereferred to as being “directly connected” or “directly coupled,” thereare no intervening elements present.

The subject matter may be embodied as devices, systems, methods, and/orcomputer program products. Accordingly, some or all of the subjectmatter may be embodied in hardware and/or in software (includingfirmware, resident software, micro-code, state machines, gate arrays,etc.) Furthermore, the subject matter may take the form of a computerprogram product on a computer-usable or computer-readable storage mediumhaving computer-usable or computer-readable program code embodied in themedium for use by or in connection with an instruction execution system.In the context of this document, a computer-usable or computer-readablemedium may be any medium that can contain, store, communicate,propagate, or transport the program for use by or in connection with theinstruction execution system, apparatus, or device.

The computer-usable or computer-readable medium may be, for example butnot limited to, an electronic, magnetic, optical, electromagnetic,infrared, or semiconductor system, apparatus, device, or propagationmedium. By way of example, and not limitation, computer readable mediamay comprise computer storage media and communication media.

Computer storage media includes volatile and nonvolatile, removable andnon-removable media implemented in any method or technology for storageof information such as computer readable instructions, data structures,program modules or other data. Computer storage media includes, but isnot limited to, RAM, ROM, EEPROM, flash memory or other memorytechnology, CD-ROM, digital versatile disks (DVD) or other opticalstorage, magnetic cassettes, magnetic tape, magnetic disk storage orother magnetic storage devices, or any other medium which can be used tostore the desired information and which can accessed by an instructionexecution system. Note that the computer-usable or computer-readablemedium could be paper or another suitable medium upon which the programis printed, as the program can be electronically captured, via, forinstance, optical scanning of the paper or other medium, then compiled,interpreted, of otherwise processed in a suitable manner, if necessary,and then stored in a computer memory.

Communication media typically embodies computer readable instructions,data structures, program modules or other data in a modulated datasignal such as a carrier wave or other transport mechanism and includesany information delivery media. The term “modulated data signal” means asignal that has one or more of its characteristics set or changed insuch a manner as to encode information in the signal. By way of example,and not limitation, communication media includes wired media such as awired network or direct-wired connection, and wireless media such asacoustic, RF, infrared and other wireless media. Combinations of the anyof the above should also be included within the scope of computerreadable media.

When the subject matter is embodied in the general context ofcomputer-executable instructions, the embodiment may comprise programmodules, executed by one or more systems, computers, or other devices.Generally, program modules include routines, programs, objects,components, data structures, etc. that perform particular tasks orimplement particular abstract data types. Typically, the functionalityof the program modules may be combined or distributed as desired invarious embodiments.

FIG. 1 is a diagram of an embodiment 100 showing a system for searchingthat includes remote services. The embodiment 100 is one mechanism bywhich data that is available through a remote service may be searchedand included in an aggregated search that may also include searchresults from other data stores.

The diagram of FIG. 1 illustrates functional components of a system. Insome cases, the component may be a hardware component, a softwarecomponent, or a combination of hardware and software. Some of thecomponents may be application level software, while other components maybe operating system level components. In some cases, the connection ofone component to another may be a close connection where two or morecomponents are operating on a single hardware platform. In other cases,the connections may be made over network connections spanning longdistances. Each embodiment may use different hardware, software, andinterconnection architectures to achieve the various componentsdescribed.

The components that make up the embodiment 100 include a client device102 that may connect to a server 104. The client 102 may have accessthrough a firewall 106 and the internet 108 to a remote service 110. Theremote service 110 may have a data storage system 112.

The various components are typical of a computer network that may befound in a business environment. The client device 102 may be a personalcomputer, personal digital assistant, data enabled cellular telephone,network appliance, or any other computing device attached to a network.

The client device 102 may have a local search engine 114 that mayperform aggregated searches of indexed data stores across the server104, the remote service 110, and may incorporate results from aninternet search engine 134. In some cases, the local search engine 114may perform a desktop search that includes searches of a local datastore 116 using a local index 118.

The local search engine 114 may have a crawler 115 that may be adaptedto create the local index 118, as well as other indexes. The crawler 115may traverse a file system or data structure of the local data store 116to create the local index 118.

In some cases, the client 102 may have an index 122 for the remoteservice database 112. The client crawler 115 may traverse the datastructure of the remote data store 112 to create the remote servicesearch index 122 that is stored on the client device 102.

The server 104 may be a server on a local area network with respect tothe client 102 and may contain a data storage system 124. In someembodiments, a search engine 125 may operate on the server 104 toprovide searching capabilities across the server data storage system 124using a server search index 126. In some embodiments, the server searchengine 125 may also perform a search of the remote service data storage112 using a remote service search index 130 that is attached to theserver 104.

The server 104 may have a crawler 127 that may create the server searchindex 126 and may, in some instances, create the remote service searchindex 130. In other instances, the remote service 110 may have a crawler131 that may create a search index 132 that is provided at the remoteservice 110.

The embodiment 100 has been chosen to illustrate several possibleconfigurations of a search system that includes a remote service. In afirst configuration, a client device 102 may have a search engine 114and crawler 115 that may crawl the remote data storage 112 and create aremote services index 122 that is stored on the client device 102. Insuch an embodiment, the crawler 115 may use a device based or user basedauthentication to access the remote service 110 and the remote servicedatabase 112. The first configuration may be used for remote servicesthat are user specific as well as remote services that are sharedbetween multiple users.

User based authentication may include any mechanism by which a specificuser or group of users may be authenticated. User based authenticationmay include submitting a user name and password, swiping a useridentification badge, performing a fingerprint identification, enteringa personal identification number, or any other mechanism by which anindividual user may be identified and authenticated. In some cases, auser based authentication may include authentication mechanisms forgroups of people.

Device based authentication may include any mechanism by which aspecific device or set of devices may be identified. For example, aspecific computer may have a serial number, IP address, MAC address, orother hardware based unique identifier. In some cases, the firewall 106may provide a degree of device based authentication as any devicelocated behind the firewall 106 may be given access to a specific remoteservice 110.

The various authentication mechanisms may be used to limit or restrictaccess to a remote service 110 and the data storage 112. In some cases,like a remotely accessed email system, each user may be allocated aportion of the data storage 112 that may be accessed by that user but noother user. Such a system may use user based authentication.

In another case, a company-wide shared file system may be provided by aremote service 110. Such a remote service may permit any device havingthose specific Internet Protocol (IP) addresses assigned to the companyto access the remote service 110.

In some cases, a combination of both device based and user basedauthentication may be used. For example, a remote service that providesaccounting services may use device based authentication as an initialstage of authentication along with user based authentication to enableaccess to sensitive accounting data. In the example, device basedauthentication may enable a subset of the features or data to beavailable while a user based authentication may be used to accesssensitive data or perform specific actions.

Embodiment 100 may be used to illustrate a second configuration. In thesecond configuration, a server 104 may perform a crawl of the remoteservice 110 to generate a remote service search index 130. The remoteservice search index 130 may be used by multiple users across a localarea network to generate search results from the remote service 110. Thesecond configuration may create a shared remote service search indexthat may span information that is viewable by several different users.

The second configuration may also be used for user-specific data. Insuch a use, the various search engines may perform a user-specificsearch of the remote service search index 130 that may return searchresults that apply to the user. In another use, the search engines mayreturn general search results from the remote service search index 130and may filter the results for a specific user.

A remote service 110 may be any type of service that is hosted andavailable over a network connection. Generally, remote services may beaccessed through the Internet 108 by a client 102. In many cases, remoteservices may be private or at least have restricted access, and therebyare generally not accessible by internet search engines. Examples ofsuch services may be remotely hosted email systems, a shared fileservice, various remotely hosted applications, and remotely hosteddatabase systems. Examples of remotely hosted applications may includecustomer resource management systems, accounting systems, projectmanagement applications, and other applications.

Connections to the remote service 110 may be made using variousencryption technologies, including a virtual private network, a secureinternet connection, or other security measures. In some cases, thevarious crawlers 115 or 127 may be adapted to create an encrypted orsecure connection with the remote service 110 while the crawler isactive.

In many cases, a user may perform a search that incorporates resultsfrom a local data store 116, a server data store 124, a remote servicedata store 112, and an internet search engine 134. The results may beperformed separately and aggregated together. In some cases, a singleindex may be created using the local index 118, the server index 126,and the remote service search index 122. In some cases, an internetsearch engine 134 may queried when a search engine runs to provideinternet search results within the aggregated search results.

The internet search engine 134 may have an index 136 of the internet 108and may also have a crawler 138 for generating and updating the index136.

In some embodiments, the remote service 110 may have a crawler 131 thatmay create and maintain a search index 132. In some cases, a searchengine may perform a query against the remote service search index 132to return search results from the remote service 110. In other cases,the remote service search index 132 may be created at the remote service110 and copied or synchronized with a remote service search index 122 atthe client 102 or a remote service search index 130 at the server 104.

The server search engine 125 may be designed to return search resultsacross a local area network in addition to remote services and theinternet. In some cases, a local search engine 114 may perform a searchof local data stores 116 while a search query is sent to the serversearch engine 125 for local area network search results. The resultsfrom both search engines may be aggregated together.

Search results may be aggregated in many different manners. In somecases, search results from the various data sources may be separated bydata location, by file type, or by other sorting mechanisms. In somecases, the results from the various data sources, including remoteservices, may be aggregated together and sorted for relevance or someother factor.

FIG. 2 is a flowchart illustration of an embodiment 200 showing a methodfor searching multiple data stores and aggregating results. Embodiment200 is merely one method of indexing and searching multiple data storesincluding data stores on remote services.

Embodiment 200 creates separate indexes for each of the various datastores, runs queries using each index, and aggregates the result. Otherembodiments may create a single index that includes the indexes of twoor more data stores. For example, an index may be created that includesan index for local data as well as data from a remote service. Such anexample may be useful in a situation such as when the remote service isan email service or some other personal or user-specific service.

In another example, an index may be created that includes an index for alocal area network server data store and a remote service data store.Such an example may be useful when the remote service includes a sharedfile system that may be shared across multiple users.

Data stores are identified for indexing in block 202. The data storesmay be any type of data store, including file systems, databases, orother data structures for which a search may be performed. For example,an accounting system database may be included as a searchable databaseto search customers, reports, invoices, and other elements within anaccounting system.

In many cases, a database may be identified with appropriate permissionsand authentication so that the database may be accessed. The permissionsmay include user based authentication mechanisms, device basedauthentication mechanisms, a combination of both user based and devicebased mechanisms as well as other authentication mechanisms.

For each data storage system in block 204, the data storage is crawledin block 206 to create a search index in block 208. After the initialsearch index is created in block 208, a periodic crawler may be startedin block 210 to update the search index.

In some instances, a crawler may be used that is tailored to the type ofdata and manner in which the data are stored. For example, a file systemcrawler may be designed to traverse a hierarchical file system andcollect file names and file content information from each file. Inanother example, a crawler for a remote service that provides a projectmanagement application may include mechanisms for connecting andauthenticating with the remote service along with a programmaticinterface to the project management database to query and interpret thedata.

After the various indexes have been constructed, a search query may bereceived in block 212. For each search index in block 214, the searchquery is run against the index in block 216 to generate search resultsin block 218.

The search results may be aggregated in block 220 and displayed in block222.

The search results may be aggregated and displayed in many differentmanners. In some embodiments, the search results may be aggregated,prioritized, and displayed in a list format with various levels ofdetail. In other embodiments, the search results may be separated bydata store, by file type, or other category.

The foregoing description of the subject matter has been presented forpurposes of illustration and description. It is not intended to beexhaustive or to limit the subject matter to the precise form disclosed,and other modifications and variations may be possible in light of theabove teachings. The embodiment was chosen and described in order tobest explain the principles of the invention and its practicalapplication to thereby enable others skilled in the art to best utilizethe invention in various embodiments and various modifications as aresuited to the particular use contemplated. It is intended that theappended claims be construed to include other alternative embodimentsexcept insofar as limited by the prior art.

1. A method comprising: indexing a remote service to produce a remoteservice index, said remote service having restricted data accessiblefrom a client device; storing said remote service index on an index hostdevice; receiving a search request on said client device; performing asearch using said remote service index and said search request togenerate remote service search results; and displaying said remoteservice search results.
 2. The method of claim 1, said remote servicebeing accessible with user-based authentication.
 3. The method of claim1, said remote service being at least one of a group composed of: anemail service; a shared file service; an application; and a databasesystem.
 4. The method of claim 3, said application comprising at leastone of a group composed of: a customer resource management application;a project management application; and an accounting application.
 5. Themethod of claim 1, said index host device being said client device. 6.The method of claim 1, said index host device being connected to saidclient device by a local area network.
 7. The method of claim 1, saidindex host device being a server adapted to deliver said remote service.8. The method of claim 1 further comprising: indexing said client deviceto produce a client device index; storing said client device searchindex on an index host device; performing said search using said clientdevice index and said search request to generate client search results;and aggregating said client device search results with said remoteservice search results during said displaying said search results.
 9. Acomputer readable medium comprising computer executable instructionsadapted to perform the method of claim
 1. 10. A system comprising: aremote indexer adapted to index a remote service and generate a remoteservice index; a search engine adapted to receive a search request,perform a remote service search using said remote service index, andreturn remote service search results; and a display mechanism adapted todisplay said search results.
 11. The system of claim 10, said remoteservice being accessible with user-based authentication.
 12. The systemof claim 10, said remote service being at least one of a group composedof: an email service; a shared file service; an application; and adatabase system.
 13. The system of claim 12, said application comprisingat least one of a group composed of: a customer resource managementapplication; a project management application; and an accountingapplication.
 14. The system of claim 10, said remote service index beingstored on a client device.
 15. The system of claim 10, said remoteservice index being stored on an index host device, said index hostbeing connected to a client device by a local area network.
 16. A methodcomprising: crawling a remote service to create a remote service index;storing said remote service index in an index repository; periodicallyupdating said remote service index by crawling said remote service on arecurring basis; receiving a search query from a client device;generating remote service search results using said remote serviceindex; generating additional search results; aggregating said remoteservice search results and said additional search results intoaggregated search results; and displaying said aggregated searchresults.
 17. The method of claim 16, said additional search resultscomprising at least one of a group composed of: client search results;internet search results; and local area network search results.
 18. Themethod of claim 16, said remote service being accessible with user-basedauthentication.
 19. The method of claim 16, said index repository beingwithin said client device.
 20. A computer readable medium comprisingcomputer executable instructions adapted to perform the method of claim16.